package pe.com.cotelasa.scp.entidad;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Collection;
import java.util.Date;
import javax.persistence.*;

@Entity
@Table(name = "detalle_orden_compra_servicio", catalog = "bdcotelasa", schema = "cotelasa")
@NamedQueries({
		@NamedQuery(name = "DetalleOrdenCompraServicio.findAll", query = "SELECT d FROM DetalleOrdenCompraServicio d"),
		@NamedQuery(name = "DetalleOrdenCompraServicio.findById", query = "SELECT d FROM DetalleOrdenCompraServicio d WHERE d.id = :id"),
		@NamedQuery(name = "DetalleOrdenCompraServicio.findByCantidad", query = "SELECT d FROM DetalleOrdenCompraServicio d WHERE d.cantidad = :cantidad"),
		@NamedQuery(name = "DetalleOrdenCompraServicio.findByCantidadForm", query = "SELECT d FROM DetalleOrdenCompraServicio d WHERE d.cantidadForm = :cantidadForm"),
		@NamedQuery(name = "DetalleOrdenCompraServicio.findByUnidadMedidaForm", query = "SELECT d FROM DetalleOrdenCompraServicio d WHERE d.unidadMedidaForm = :unidadMedidaForm"),
		@NamedQuery(name = "DetalleOrdenCompraServicio.findByPrecio", query = "SELECT d FROM DetalleOrdenCompraServicio d WHERE d.precio = :precio"),
		@NamedQuery(name = "DetalleOrdenCompraServicio.findByPrecioForm", query = "SELECT d FROM DetalleOrdenCompraServicio d WHERE d.precioForm = :precioForm"),
		@NamedQuery(name = "DetalleOrdenCompraServicio.findBySubTotal", query = "SELECT d FROM DetalleOrdenCompraServicio d WHERE d.subTotal = :subTotal"),
		@NamedQuery(name = "DetalleOrdenCompraServicio.findByObservacion", query = "SELECT d FROM DetalleOrdenCompraServicio d WHERE d.observacion = :observacion"),
                @NamedQuery(name = "DetalleOrdenCompraServicio.findByNombreArticulo", query = "SELECT d FROM DetalleOrdenCompraServicio d WHERE d.nombreArticulo = :nombreArticulo"),
		@NamedQuery(name = "DetalleOrdenCompraServicio.findByImagen", query = "SELECT d FROM DetalleOrdenCompraServicio d WHERE d.imagen = :imagen"),
                @NamedQuery(name = "DetalleOrdenCompraServicio.findByPorcentajeMerma", query = "SELECT d FROM DetalleOrdenCompraServicio d WHERE d.porcentajeMerma = :porcentajeMerma"),
                @NamedQuery(name = "DetalleOrdenCompraServicio.findByMerma", query = "SELECT d FROM DetalleOrdenCompraServicio d WHERE d.merma = :merma"),
                @NamedQuery(name = "DetalleOrdenCompraServicio.findBySaldo", query = "SELECT d FROM DetalleOrdenCompraServicio d WHERE d.saldo = :saldo"),
                @NamedQuery(name = "DetalleOrdenCompraServicio.findByTotalRecibido", query = "SELECT d FROM DetalleOrdenCompraServicio d WHERE d.totalRecibido = :totalRecibido"),
		@NamedQuery(name = "DetalleOrdenCompraServicio.findByEstadoRegistro", query = "SELECT d FROM DetalleOrdenCompraServicio d WHERE d.estadoRegistro = :estadoRegistro"),
		@NamedQuery(name = "DetalleOrdenCompraServicio.findByUsrCreacion", query = "SELECT d FROM DetalleOrdenCompraServicio d WHERE d.usrCreacion = :usrCreacion"),
		@NamedQuery(name = "DetalleOrdenCompraServicio.findByFecCreacion", query = "SELECT d FROM DetalleOrdenCompraServicio d WHERE d.fecCreacion = :fecCreacion"),
		@NamedQuery(name = "DetalleOrdenCompraServicio.findByUsrModificacion", query = "SELECT d FROM DetalleOrdenCompraServicio d WHERE d.usrModificacion = :usrModificacion"),
		@NamedQuery(name = "DetalleOrdenCompraServicio.findByFecModificacion", query = "SELECT d FROM DetalleOrdenCompraServicio d WHERE d.fecModificacion = :fecModificacion") })
public class DetalleOrdenCompraServicio implements Serializable {

	@Id
	@SequenceGenerator(name = "generadorDetalleOrdenCompraServicio", sequenceName = "cotelasa.detalle_orden_compra_servicio_id_seq")
	@GeneratedValue(generator = "generadorDetalleOrdenCompraServicio")
	@Column(name = "id")
	private Integer id;

	@Basic(optional = false)
	@Column(name = "cantidad")
	private BigDecimal cantidad;

	@Column(name = "cantidad_form")
	private BigDecimal cantidadForm;

	@Column(name = "unidad_medida_form")
	private String unidadMedidaForm;

	@Basic(optional = false)
	@Column(name = "precio")
	private BigDecimal precio;

	@Basic(optional = false)
	@Column(name = "precio_form")
	private BigDecimal precioForm;

	@Basic(optional = false)
	@Column(name = "subtotal")
	private BigDecimal subTotal;

	@Column(name = "observacion")
	private String observacion;
        
        @Column(name = "nombre_articulo")
	private String nombreArticulo;
        
	@Column(name = "imagen")
        private String imagen;
        
        @Column(name = "porcentaje_merma")
        private BigDecimal porcentajeMerma;
    
        @Column(name = "merma")
        private BigDecimal merma;

        @Column(name = "saldo")
        private BigDecimal saldo;

        @Column(name = "total_recibido")
        private BigDecimal totalRecibido;
    
	@Basic(optional = false)
	@Column(name = "estado_registro")
	private char estadoRegistro;

	@Basic(optional = false)
	@Column(name = "usr_creacion")
	private String usrCreacion;

	@Basic(optional = false)
	@Column(name = "fec_creacion")
	@Temporal(TemporalType.TIMESTAMP)
	private Date fecCreacion;

	@Column(name = "usr_modificacion")
	private String usrModificacion;

	@Column(name = "fec_modificacion")
	@Temporal(TemporalType.TIMESTAMP)
	private Date fecModificacion;

	@JoinColumn(name = "id_tipo_unidad_minima", referencedColumnName = "id")
	@ManyToOne(optional = false,fetch=FetchType.LAZY)
	private TipoUnidadMinima idTipoUnidadMinima;

	@JoinColumn(name = "id_orden_compra_servicio", referencedColumnName = "id")
	@ManyToOne(optional = false,fetch=FetchType.LAZY)
	private OrdenCompraServicio idOrdenCompraServicio;

	@JoinColumn(name = "id_articulo", referencedColumnName = "id")
	@ManyToOne(optional = false,fetch=FetchType.LAZY)
	private Articulo idArticulo;

	@OneToMany(cascade = CascadeType.ALL,mappedBy = "idDetalleOrdenCompraServicio",fetch=FetchType.LAZY)
	private Collection<PartidaDespacho> partidaDespachoCollection;

	public DetalleOrdenCompraServicio() {
	}

	public DetalleOrdenCompraServicio(Integer id) {
		this.id = id;
	}

	public DetalleOrdenCompraServicio(Integer id, BigDecimal cantidad,
			BigDecimal precio, char estadoRegistro, String usrCreacion,
			Date fecCreacion) {
		this.id = id;
		this.cantidad = cantidad;
		this.precio = precio;
		this.estadoRegistro = estadoRegistro;
		this.usrCreacion = usrCreacion;
		this.fecCreacion = fecCreacion;
	}

	public Integer getId() {
		return id;
	}

	public void setId(Integer id) {
		this.id = id;
	}

	public BigDecimal getCantidad() {
		return cantidad;
	}

	public void setCantidad(BigDecimal cantidad) {
		this.cantidad = cantidad;
	}

	public BigDecimal getCantidadForm() {
		return cantidadForm;
	}

	public void setCantidadForm(BigDecimal cantidadForm) {
		this.cantidadForm = cantidadForm;
	}

	public String getUnidadMedidaForm() {
		return unidadMedidaForm;
	}

	public void setUnidadMedidaForm(String unidadMedidaForm) {
		this.unidadMedidaForm = unidadMedidaForm;
	}

	public BigDecimal getPrecio() {
		return precio;
	}

	public void setPrecio(BigDecimal precio) {
		this.precio = precio;
	}

	public BigDecimal getPrecioForm() {
		return precioForm;
	}

	public void setPrecioForm(BigDecimal precioForm) {
		this.precioForm = precioForm;
	}

	public BigDecimal getSubTotal() {
		return subTotal;
	}

	public void setSubTotal(BigDecimal subTotal) {
		this.subTotal = subTotal;
	}

	public String getObservacion() {
		return observacion;
	}

	public void setObservacion(String observacion) {
		this.observacion = observacion;
	}

	public char getEstadoRegistro() {
		return estadoRegistro;
	}

	public void setEstadoRegistro(char estadoRegistro) {
		this.estadoRegistro = estadoRegistro;
	}

	public String getUsrCreacion() {
		return usrCreacion;
	}

	public void setUsrCreacion(String usrCreacion) {
		this.usrCreacion = usrCreacion;
	}

	public Date getFecCreacion() {
		return fecCreacion;
	}

	public void setFecCreacion(Date fecCreacion) {
		this.fecCreacion = fecCreacion;
	}

	public String getUsrModificacion() {
		return usrModificacion;
	}

	public void setUsrModificacion(String usrModificacion) {
		this.usrModificacion = usrModificacion;
	}

	public Date getFecModificacion() {
		return fecModificacion;
	}

	public void setFecModificacion(Date fecModificacion) {
		this.fecModificacion = fecModificacion;
	}

	public TipoUnidadMinima getIdTipoUnidadMinima() {
		return idTipoUnidadMinima;
	}

	public void setIdTipoUnidadMinima(TipoUnidadMinima idTipoUnidadMinima) {
		this.idTipoUnidadMinima = idTipoUnidadMinima;
	}

	public OrdenCompraServicio getIdOrdenCompraServicio() {
		return idOrdenCompraServicio;
	}

	public void setIdOrdenCompraServicio(
			OrdenCompraServicio idOrdenCompraServicio) {
		this.idOrdenCompraServicio = idOrdenCompraServicio;
	}

	public Articulo getIdArticulo() {
		return idArticulo;
	}

	public void setIdArticulo(Articulo idArticulo) {
		this.idArticulo = idArticulo;
	}

	public Collection<PartidaDespacho> getPartidaDespachoCollection() {
		return partidaDespachoCollection;
	}

	public void setPartidaDespachoCollection(
			Collection<PartidaDespacho> partidaDespachoCollection) {
		this.partidaDespachoCollection = partidaDespachoCollection;
	}

	@Override
	public int hashCode() {
		int hash = 0;
		hash += (id != null ? id.hashCode() : 0);
		return hash;
	}

	@Override
	public boolean equals(Object object) {
		// TODO: Warning - this method won't work in the case the id fields are
		// not set
		if (!(object instanceof DetalleOrdenCompraServicio)) {
			return false;
		}
		DetalleOrdenCompraServicio other = (DetalleOrdenCompraServicio) object;
		if ((this.id == null && other.id != null)
				|| (this.id != null && !this.id.equals(other.id))) {
			return false;
		}
		return true;
	}

	@Override
	public String toString() {
		return "pe.com.cotelasa.scp.entidad.DetalleOrdenCompraServicio[ id="
				+ id + " ]";
	}

    public String getNombreArticulo() {
        return nombreArticulo;
    }

    public void setNombreArticulo(String nombreArticulo) {
        this.nombreArticulo = nombreArticulo;
    }

    public BigDecimal getPorcentajeMerma() {
        return porcentajeMerma;
    }

    public void setPorcentajeMerma(BigDecimal porcentajeMerma) {
        this.porcentajeMerma = porcentajeMerma;
    }

    public BigDecimal getMerma() {
        return merma;
    }

    public void setMerma(BigDecimal merma) {
        this.merma = merma;
    }

    public BigDecimal getSaldo() {
        return saldo;
    }

    public void setSaldo(BigDecimal saldo) {
        this.saldo = saldo;
    }

    public BigDecimal getTotalRecibido() {
        return totalRecibido;
    }

    public void setTotalRecibido(BigDecimal totalRecibido) {
        this.totalRecibido = totalRecibido;
    }

    public String getImagen() {
        return imagen;
    }

    public void setImagen(String imagen) {
        this.imagen = imagen;
    }
}
